AWSの新認定試験 AWS Certified AI Practitioner (AIF) 勉強会を実施したのでその内容をまとめました【その2:生成AI+Bedrock】
こんちには。
データ事業本部 インテグレーション部 機械学習チームの中村( @nokomoro3 )です。
先日社内向けに新しい認定試験、AWS Certified AI Practitioner(AIF)の勉強会を開催しましたので、その内容に関する記事の第2回(全3回)です。
- AIF勉強会を実施したのでその内容をまとめました【その1:AI/ML一般知識】
- AIF勉強会を実施したのでその内容をまとめました【その2:生成AI+Bedrock】 ※本記事※
- AIF勉強会を実施したのでその内容をまとめました【その3:SageMaker+その他】
勉強会に使用したスライドは以下です。(実際にはAI/ML一般知識の部分は社外公開用に加筆しました)
第2回目となる本記事では、「生成AI+Bedrock」について説明します。
AWSにおけるAI/MLサービスの全体像
AWSにおけるAI/MLサービスの全体像は上記のような図で説明されています。
自分なりにまとめると、近年リリースされた生成AI系のサービスがまず挙げられますが、それ以前はおおきくSageMakerからなる機能群と、それぞれの用途に特化したマネージドサービスがありました。
SageMakerの機能は多岐に渡るのですが、SageMaker Canvasが非技術職でも使用できるノーコードツール、SageMaker JumpStartがエンジニアが使用することを想定した目的別のテンプレートとなっています。それ以外の機能がさらにパーツとして準備されています。
生成AIとは
第1回でも生成AIについて軽く触れましたが、さらに詳しく述べ、Bedrockとは何かについて説明しています。
ベクトル化は厳密には生成AIではないと思いますが、後述のRAGと組み合わせで使用されることから、Bedrockで提供されています。
生成AIの制約
生成AIは基本的な仕組みは、ユーザの質問に対して「自然な続き」を予測するだけです。(エージェント的な機能やモデルの様々な改善により、様々な動作が可能になっていますが原則的には)
そのために発生する様々な制約について3つ挙げて説明しています。一つ目は学習データにないものは回答できない点です。
もう一つは様々な論理的な熟考を重ねた結果ではないため、表現の自然さが損なわれていなければ間違った回答を返すことがあります。これをハルシネーション(幻覚)と呼びます。
例では存在しない機能について質問して、さもそれが存在するかのように回答しています。
また数値が苦手という点もこちらに関係しており、数値は他の数値で置き換えを行っても文章としては自然なので容易な問題でも謝ることがあります。
最後に挙げている制約は、回答にランダム性がある点です。自然な続きを予測するという観点では、回答に複数の可能性があるため、ランダム性が存在します。
これらの制約に対して、様々な機能や調整方法があります。
生成AIの用語
基本的なフローとパラメータ
機能を抑えつつ、基本的な用語を説明しています。このスライドは以下を参考にしています。
- https://docs.aws.amazon.com/bedrock/latest/userguide/key-definitions.html
- https://docs.aws.amazon.com/bedrock/latest/userguide/inference-parameters.html
ユーザのリクエストとは別に、システムプロンプトである程度ふるまいをコントロールできます。このユーザのリクエストやシステムプロンプトを試行錯誤することを、プロンプトエンジニアリングと言います。
また回答にランダム性があるという話をしましたが、バリエーションをコントロールするパラメータが複数あります。
- temperature(温度)
- top-k
- top-p
複数同時に調整することは非推奨ですが、いずれのパラメータも小さくすることでランダム性を下げることができます。
また単に用語としてですが、プロンプトやレスポンスはトークンという単位でカウントされ、このトークンごとに料金が発生します。レスポンス側はmax_tokensというパラメータで長さをコントロールできます。
生成AI向けの評価指標
生成AI関連の評価指標を説明しています。このスライドは以下を参考にしています。
- https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-metrics-validation.html
- https://docs.aws.amazon.com/sagemaker/latest/dg/timeseries-objective-metric.html
- https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-llms-finetuning-metrics.html
第1回でもこちらについては詳しく説明していますが、生成AI関連とそれ以外のものは意識して理解しておきましょう。
生成AIのカスタマイズ
プロンプトエンジニアリング
プロンプトエンジニアリングは用語の部分でも述べた通り、システムプロンプトやユーザの質問文を工夫することとなります。
この質問文に、タスクに関する説明と解答例のサンプルを与えてある程度動作をコントロールできます。
そのサンプルが複数あればFe-Shot、サンプルが一つであればOne-Shot、サンプルなしであればZero-Shotという方式になります。
RAG
RAGに関する説明です。生成AIモデルにはない、社内情報などを元に回答する場合に使用される方式です。
実体としては、検索を裏で回してプロンプトエンジニアリングをしているにすぎません。(エージェントもそうですが、実際生成AIでできるカスタマイズはプロンプトエンジニアリングの組み合わせか、モデル自体のチューニングの2択しかありません)
RAGの詳しい解説とBedrock Knowlege Basesについては、最近BlackBeltに公開されたので、詳細はそちらもご確認ください。
ファインチューニング
ここからはモデル自体をチューニング(パラメータの改変)を行う方式です。一つ目は、ファインチューニングです。こちらは入力と正解のペアのデータを複数個渡すことで特定のタスクに特化した調整が行えます。例では入力をおじさん構文に変換する生成AIにチューニングしています。
継続的事前学習
最後にもう一つモデル自体をチューニングする方式です。こちらは生成AIを実際にゼロから作る場合と同じ方式で学習するという意味で、継続的事前学習という呼び名となっていると推測されます。ですのでデータとしてはコーパス(まとまった規模のテキスト)を与えることで、そのコーパスを使って事前学習時と同じ学習データ(例えば穴埋め問題)を作成して、生成AIを学習していると考えられます。
用途としては根本的な表現の修正や専門用語への対応が想定されています。
データとしてはユーザが正解データを準備しなくて良いのですが、教師なし学習というよりは自己教師あり学習(教師データを自動で作る)と考えられます。
カスタマイズ方法の一覧
まとめとして、生成AIのカスタマイズのそれぞれの用途と、Bedrockの機能としての対応付けを説明しています。
それぞれの詳細は以下を確認ください。
- プロンプトエンジニアリング
- RAG(Knowledge Bases)
- ファインチューニング
- 継続的事前学習
特にモデル自体をチューニングする2つの方式は、料金のところで後述するようにプロビジョンド・スループットが必要になる点は念頭に置いておきましょう。
その他のBedrockの機能
その他のBedrockという名前の付く機能群です。概要はスライドにある通りですが、それぞれ公式と弊社ブログの詳しい説明を貼っておきます。
- Amazon Bedrock Knowlege Bases
- Amazon Bedrock Agents
- Amazon Bedrock Guardrails
エージェントとは
エージェントだけ、初めて聞く方には耳慣れない用語なので別途説明しています。基本的にはプロンプトを使った色々と頑張っているのですが、多数のツール群を裏側で実行できる状態とし、内部の判断・思考や結果の抽出などに生成AIを活用して実行しているようなイメージです。利用者側としてはその裏側のプロンプトを意識することは無いのですが、裏側では生成AIが何回も動いているケースもあります。
Bedrockの料金体系
Bedrockの料金体系について説明しています。基本的にはここまで説明してきた内容のままで、通常はトークン単位の料金を意識しておけばOKです。
ファインチューニングと継続的事前学習については、プロビジョンド・スループットを使う必要があります。
詳細は以下もご確認ください。
- https://aws.amazon.com/jp/bedrock/pricing/
- https://dev.classmethod.jp/articles/amazon-bedrock-model-spec-and-pricing/
Amazon Qについて
最後にAmazon Qについて軽く触れています。大きくBusinessとDeveloperに分かれていますので、その違いは意識しておく必要があります。
Businessについては以下の弊社ブログ記事も参考にされてください。
まとめ
いかがでしたでしょうか。第2回については生成AIとBedrock、他について詳しく見ていきました。第3回目もぜひご覧ください。
AIFの試験を受けられる方の参考になれば幸いです。